#include "widget.h"
#include "ui_widget.h"

#include <QDebug>
#include <QTimerEvent>
#include <QTimer>
#include <QString>
#include <QTime>

Widget::Widget(Widget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    // 下面设置定时器的超时时间的单位都是(毫秒)的单位

    // 法一
    id1 = startTimer(1000);
    id2 = startTimer(2000);
    id3 = startTimer(3000);

    // 法二
    QTimer* timer = new QTimer(this);
    connect(timer, &QTimer::timeout, this, &Widget::upload_current_time);
    timer->start(1000);
}

Widget::~Widget()
{
    delete ui;

    killTimer(id1);
    killTimer(id2);
    killTimer(id3);
}

// 法一：重写 QTimerEvent 类的 timerEvent 虚函数
void Widget::timerEvent(QTimerEvent *event)
{
    if(event->timerId() == id1){
        qDebug() << "id1 timer triggered" << Qt::endl;
    }

    if(event->timerId() == id2){
        qDebug() << "id2 timer triggered" << Qt::endl;
    }

    if(event->timerId() == id3){
        qDebug() << "id3 timer triggered" << Qt::endl;
    }
}

// 法二：QTimer 定时器对象关联的槽函数
void Widget::upload_current_time()
{
    QTime time = QTime::currentTime();
    QString text = time.toString("hh:mm:ss");
    qDebug() << " current time is " << Qt::endl;

    // 把上面设置的 : 可以每隔一秒做一次显示
    if(time.second() % 2 == 0){
        text[2] = ':'; // 用单引号，不用双引号。双引号是字符串
        text[5] = ':';
    }
    ui->lcdNumber->setDigitCount(text.length()); // 把时分秒都给显示出来
    ui->lcdNumber->display(text);
}
